import axios, { AxiosResponse } from 'axios';
import Apis from '../api/Apis';

const instance = axios.create({
    baseURL: 'http://192.168.5.8:7001',
    timeout: 15 * 1000,
});

/**
 * 对返回体错误信息分类1`   
 */
instance.interceptors.response.use(
    response => response,
    error => {
        const { response } = error;
        if (response) {
            const { status } = response;
            if (status >= 500) {
                console.log('服务端报错');
                
                // 服务端报错
            } else if (status === 400) {
                console.log('接口参数异常');
                // 接口参数异常
            } else if (status === 401) {
                console.log('登陆信息过期')
                // 登陆信息过期，需要重新登陆
            } else {
                console.log('统一按照接口报错处理')
                // 其它错误类型，统一按照接口报错处理
            }
        } else {
            console.log("网络异常");
            
            // 网络异常
        }
        return Promise.reject(error);
    }
);

export const request = (name: string, params: any): Promise<AxiosResponse<any, any>> => {
    const api = (Apis as any)[name];
    const { url, method } = api;
    if (method === 'get') {
        return get(url, params);
    } else {
        return post(url, params);
    }
}

export const get = (url: string, params: any): Promise<AxiosResponse<any, any>> => {
    return instance.get(url, {
        params: params,
    })
}

export const post = (url: string, params: any): Promise<AxiosResponse<any, any>> => {
    return instance.post(url, params);
}

// 响应拦截器
// requestMock.interceptors.response.use(
//   res => {
//     const isSuccess = res.data.code === '200';
//     const isTokenBroken = res.data.code === '10119';
//     const {method} = res.config;
//     // UI反馈

//     if (method !== 'get' || !isSuccess) {
//       // if (!silent) {
//       if (isTokenBroken) {
//         Toast.show('登录过期，请重新登录！');
//         // 返回到登录页面
//         // router.history.push("login");
//       } else
//         isSuccess
//           ? Toast.success(res.data.message)
//           : Toast.error(res.data.message);
//       // }
//     }
//     if (isSuccess) {
//       // 成功返回真正的数据
//       return res.data.data;
//     }
//     // if (loud)
//         isSuccess ?
//         Toast.success(res.data.message) :
//         Toast.error(res.data.message);

//     // 失败
//     throw new Error(res.data.data);
//   },
//   error => {
//     // 请求过程失败
//     Toast.show('网络请求失败');
//     return Promise.reject(error);
//   },
// );
/**
 * 对返回体错误信息分类
 */